package com.atguigu.jxc.controller;

import com.atguigu.jxc.domain.ServiceVO;
import com.atguigu.jxc.entity.Goods;
import com.atguigu.jxc.entity.Unit;
import com.atguigu.jxc.service.GoodTypeService;
import com.atguigu.jxc.service.GoodsService;
import com.atguigu.jxc.vo.GoodsTypeVo;
import com.github.pagehelper.PageInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @Author: zhao
 * @Date: 2020/12/3 11:54
 */
@Api(description = "商品管理")
@RestController
public class GoodsTypeController {


    @Autowired
    private GoodTypeService goodTypeService;

    @Autowired
    private GoodsService goodsService;

    /**
     * 查询商品所有分类
     * 请求URL：http://localhost:8080/goodsType/loadGoodsType
     * 请求参数：无
     * 请求方式：POST
     * 返回值类型：JSON
     * 返回值：String
     */
    @ApiOperation(value = "查询商品所有分类")
    @PostMapping("/goodsType/loadGoodsType")
    public List getGoodsCategory() {

        List<GoodsTypeVo> goodsTypeVoList = goodTypeService.getGoodsCategory();

        return goodsTypeVoList;

    }

    /**
     * 查询所有商品单位
     * 请求URL：http://localhost:8080/unit/list
     * 请求参数：无
     * 请求方式：POST
     * 返回值类型：JSON
     * 返回值：Map<String,Object>
     */
    @PostMapping("/unit/list")
    public Map<String, Object> getAllUnit() {
        List<Unit> unitList = goodTypeService.getAllUnit();
        Map<String, Object> map = new HashMap<>();
        map.put("rows", unitList);
        return map;
    }

    /**
     * 查询所有商品信息（可根据家具家电分类、名称查询）
     * 请求URL：http://localhost:8080/goods/list
     * 请求参数：Integer page, Integer rows, String goodsName, Integer goodsTypeId
     * 请求方式：POST
     * 返回值类型：JSON
     * 返回值：Map<String,Object>
     */
    @PostMapping("/goods/list")
    public Map<String, Object> getGoodsByType(Integer page, Integer rows, String goodsName, Integer goodsTypeId) {
        List<Goods> goodsList = goodsService.getGoodsByType(page, rows, goodsName, goodsTypeId);

        PageInfo<Goods> pageInfo = new PageInfo<>(goodsList);
        Map<String, Object> map = new HashMap<>();
        map.put("total", pageInfo.getTotal());
        map.put("rows", goodsList);
        return map;
    }

    /**
     * 新增分类
     * 请求URL：http://localhost:8080/goodsType/save
     * 请求参数：String  goodsTypeName,Integer  pId
     * 请求方式：POST
     * 返回值类型：JSON
     * 返回值：ServiceVO
     */
    @PostMapping("/goodsType/save")
    public ServiceVO addGoodsType(String goodsTypeName, Integer pId) {
        return goodTypeService.addGoodsType(goodsTypeName, pId);
    }

    /**
     * 删除分类
     * 请求URL：http://localhost:8080/goodsType/delete
     * 请求参数：Integer  goodsTypeId
     * 请求方式：POST
     * 返回值类型：JSON
     * 返回值：ServiceVO
     */
    @PostMapping("/goodsType/delete")
    public ServiceVO deleteGoodsType(Integer goodsTypeId) {
        return goodTypeService.deleteGoodsType(goodsTypeId);
    }

    /**
     * 商品添加或修改
     * 请求URL：http://localhost:8080/goods/save?goodsId=37
     * 请求参数：Goods goods
     * 请求方式：POST
     * 返回值类型：JSON
     * 返回值：ServiceVO
     */
    @PostMapping("/goods/save")
    public ServiceVO addGoods(Goods goods){
        return goodsService.addGoods(goods);
    }

    /**
     * 商品删除（要判断商品状态,入库、有进货和销售单据的不能删除）
     * 请求URL：http://localhost:8080/goods/delete
     * 请求参数：Integer goodsId
     * 请求方式：POST
     * 返回值类型：JSON
     * 返回值：ServiceVO
     */
    @PostMapping("/goods/delete")
    public ServiceVO deleteGoods(Integer goodsId){
        return goodsService.deleteGoods(goodsId);
    }


}
